/*
 * @lc app=leetcode.cn id=1441 lang=javascript
 *
 * [1441] 用栈操作构建数组
 */

// @lc code=start
/**
 * @param {number[]} target
 * @param {number} n
 * @return {string[]}
 */
 var buildArray = function (target, n) {
    let stack = [],
      temp = [];

    for (let i = 0; i < n; i++) {
      temp.push(i + 1);
      stack.push("Push");

      // ✨辅助栈法
      // - 声明一个模拟栈
      //      - 就像梯子
      //      - 当中间有不合适的间隔时，就出栈，
      //      - 这样模拟栈就能类似target
      if (temp[temp.length - 1] !== target[temp.length - 1]) {
        stack.push("Pop");
        temp.pop();
      }

      if (target.length === temp.length) return stack;
    }

    return stack;
  };
  // @lc code=end
